// es6中函数传参默认值等问题
// function fn(name,
//     age=100,
//     arr=[],
//     obj={},
//     callback=function(){}){

//         console.log(arr);
//         console.log(obj);
//         console.log(callback("aaaaa"));
// // 参数1必须要传递;
// // 其余参数有默认值,可选传递
// }
// fn("kunkun不哭",200,[1,2,3],{dilireba:1},function (info){
//     return info
// })

// 函数参数的默认值,也可以是另一个函数的返回值
// function pi(){
//     return 3.24242
// }
// function fn(r,p=pi()){
//     console.log(r*r*p); //pi()返回值交给p
// }
// fn(10);//324.242

// 如果只想传递第二往后的参数,参数一保持默认值,可用undefined来占位.参数一保持默认值
// function fn(name="kunkunjianqiang",age){
//     console.log(name);
//     console.log(age);
// }
// fn(undefined,100)

// 支持参数二使用参数一的值作为默认值,反之不可以
// function fn(x,y=x){
//     console.log(y); //(y=x,x)错误
// }
// fn(1)

// ...rest参数
// 解构变量不定元素,函数的参数也可以有不定参数.不定参数之后不能再有参数
// function fn(name,...other,aaa){
//     console.log(other); //[100, '你那']数组  
// }
// fn('peiyin',100,"你那")

// 二\name属性 
// es6提供了一个name属性u用来获取函数名,
function fn(){}
let fn2=function(){}
let obj={
    fn3:function(){}
}
console.log(fn.name);
console.log(fn2.name);
console.log(obj.fn3.name);

console.log((new Function()).name); //匿名函数anonymous